Dynamic Object Replacement and Implementation-Only Classes
نویسنده
چکیده
GILGUL is an extension of the Java programming language that allows for dynamic object replacement without consistency problems. This is possible in a semantically clean way, because its model strictly separates the notions of reference and comparison that usually are subsumed in the concept of object identity. Since GILGUL’s new operations respect Java’s type system, objects still can be replaced only by instances of the same class or any subclasses thereof, but not by instances of any of the former object’s superclasses. The concept of implementation-only classes is an extension of the type system that allows classes to be declared that never must be used as types. Consequently, instances of implementation-only classes always can be replaced by instances of their superclasses. This effectively widens the range of both anticipated and unanticipated adaptations. 1 The TAILOR Project 1.1 Unanticipated Adaptation Software requirements are in a constant flux. Some changes in requirements can be anticipated by software developers, so that the necessary adaptations can be prepared for, for example by suitable parameterization or by application of dedicated design patterns. Within the scope of these anticipated options for adaptation, software can be used already in a flexible way, albeit in restricted limits und with a corresponding increase in development effort. However, unanticipated changes of requirements occur repeatedly in practice, and the above suggested techniques cannot tackle them by definition. Furthermore, the manual integration of hooks for any conceivable eventuality is not a feasible option, since this dramatically decreases reliability, efficiency and maintainability of systems. Alternatively, programming languages and runtime systems should be equipped with features that allow for far reaching manipulations of program internals without destructively modifying its source code. This leads to an increase of options for unanticipated adaptations as well as a decrease of effort to prepare for anticipated adaptations. Therefore the structure of programs can be kept much simpler from the outset and they can be focussed on solving their primary tasks. In order to provide for this significant simplification of software development, the goal of the TAILOR Project at the Institute of Computer Science III of the University of Bonn [21] is to conceive and implement enhancements of programming languages and runtime systems to allow for unanticipated adaptability of software. In doing so, special attention is payed to the following issues. 1.2 Component-Oriented Software The focus on Component-Oriented Software pushes the limits even further, since it generally is not required that components can be modified in unanticipated ways when being integrated into a system. On the contrary, components usually are deployed using a compiled format, and their source code is not available for modifications. Even if the source code can be accessed in some cases, destructive modifications still are not feasible, since they would lapse in the presence of new versions of a component. However, it is still highly desirable to be able to use components in unanticipated contexts and with unanticipated adaptations. How can such unanticipated adaptations be carried out on a software component when only its interfaces are guaranteed to be known and when the need to update to new versions in the future have to be taken into account? 1.3 Reduction of Downtime Essentially, unanticipated adaptations of software can take place at two points in time. They can be performed before a program is being linked into its final form, or they can happen during runtime. Adaptations before linktime can be tackled by systems that allow for transformations of source code or
منابع مشابه
Implementation of the Dynamic Behavior of Object Oriented System
Object oriented methodologies such as Object Modeling Technique (OMT), suggest to create different models of a system indicative of its static structure and dynamic behavior. Converting the static structure (usually represented as an ER-style diagram) into implementation code is already much understood. On the contrary, implementing the dynamic behavior is rather less understood and is consider...
متن کاملتوسعه دو مدل ریاضی کارا برای مسئله کولهپشتی چند انتخابی فازی
Multi-choice knapsack problem is a branch of regular knapsack problem where the objects are classified in different classes and each class has one and only one representative in final solution. Although it is assumed that each object belongs to just one class, sometimes this assumption is not valid in real problems. In this case an object may belong to the several classes. In fuzzy multi-choic...
متن کاملLive Software Development with Dynamic Classes
Software modification at run-time can facilitate rapid prototyping, streamline development and debugging, and enable interactive educational programming environments. However, supporting live fine-grain program modification while reaping the benefits of a compiled type-safe language is a challenging problem. This paper presents fine-grain dynamic classes that support live object-oriented softwa...
متن کاملFlexible , source level dynamic linking and re - linking � – Work in Progress –
We give a formal semantics for dynamic linking and re-linking of code. The semantics is at source language level, and allows linking at a finer grain than current Java or C# implementations: Besides supporting the loading and verification of classes interleaved with program execution, it also allows type-safe removal and replacement of classes, fields and methods. Such extended features support...
متن کاملUsing Dynamic Configurability to Support Object - Oriented Languages and Systems in Legion University of Virginia Computer
Wide area distributed object systems will require mechanisms for creating, describing, and managing objects. The mechanisms must be scalable and must not mandate particular policies or algorithms because users will have different cost, security, performance, and functionality demands. Legion is a wide area distributed object system that supports this requirement using a first-class active class...
متن کامل